package com.hanlyjiang.library.widget.base;

import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.View;

/**
 * 编写继承自自定义 View 时可以继承此方法，避免手动编写初始化方法
 *
 * @author hanlyjiang on 2017/6/12-17:41.
 * @version 1.0
 */

public abstract class BaseCustomView extends View {

    public BaseCustomView(Context context) {
        super(context);
        init(context, null, 0, 0);
    }

    public BaseCustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0, 0);
    }

    public BaseCustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs, defStyleAttr, 0);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public BaseCustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init(context, attrs, defStyleAttr, defStyleRes);
    }

    /**
     * 获取TypedArray
     *
     * @param context
     * @param attrs
     * @param attrsArrayStyle 自定义View 的属性 R.stylable.xxxx
     * @return
     */
    protected TypedArray retrTypedArray(Context context, AttributeSet attrs, int[] attrsArrayStyle) {
        return context.obtainStyledAttributes(attrs, attrsArrayStyle);
    }

    /**
     * 在此处进行视图初始化操做 此方法在构造函数中调用
     *
     * @param context
     * @param attrs
     * @param defStyleAttr
     * @param defStyleRes
     */
    protected abstract void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes);
}
